# FROM 代表有个基础镜像
FROM node:10 

# 用来标识谁在维护这个项目
LABEL maintainer=bgl_cumt_zju@163.com

# 创建一个工作目录
WORKDIR /app

# 将当前目录下的所有文件或资源复制到镜像中。
# 注：针对项目中的 node_modules 或 dist 目录等不需要拷贝到镜像的文件，可以借助.dockerignore
COPY . .

# 使用淘宝的镜像源进行加速
RUN yarn install --registry=https://registry.npm.taobao.org

# 产生 dist 目录，以及 server.bundle.js 
RUN yarn build

# 全局安装PM2
RUN npm install pm2 -g

# EXPOSE 相当于暴露镜像的某个端口
# 这里暴露一些服务端口，以便在宿主机去运行这个镜像的时候可以将其映射到宿主机上的端口
EXPOSE 3000

# 将 app 目录下的 public 目录挂载出来
VOLUME [ "/app/public" ]

# PM2 默认情况下会在后台运行，当在我们在 Docker 中使用 PM2 的时候，就不能让 PM2 在
# 后台运行，否则容器会在 CMD 命令运行后立即退出
CMD ["pm2", "start", "ecosystem.config.js", "--no-daemon"]